cc-pocket · mobile ui 2.0 · chat quick actions · master

Chat Quick Actions Master v1

The implementation handoff for the sheet behind Chat's top-right overflow. One device component drives every frame on this board, so each is live: open a picker and come back, toggle Fast mode, arm Clear, flip the capability gates and watch rows appear and disappear. Theme, locale and text size are runtime state, not separate mockups. No action, callback or visibility rule changes.

live prototype
402 × 874 · 1:1
11 actions
4 written groups
1 removal
no new facts
Corrected · handoff is an ordinary row

Hand off to a colleague now uses the geometry, weight, ink and surface of Terminal and Changed files. The NEW badge, relay glyph, tinted fill and accent text are gone with no replacement. Being conditionally available is not a state, and no row on this sheet carries an icon, so handoff carries none either.

Corrected · list language, not stacked cards

Every action was a detached filled rectangle, which flattened eleven items into eleven equal advertisements. They are now hairline-separated rows under four written group labels, one vertical reading path, values and chevrons right-aligned. Grouping does the work the fills were failing to do.

Unchanged from production

Same eleven actions, same capability gates, same callbacks, same two-tap Clear, same bottom sheet shell with scrim, drag handle and Back dismissal. Clear stays separated and written in danger ink, never filled. Model, effort and mode still print their current values; model identifiers stay literal and monospaced.

A

Walk the sheet

Opens on the default Chinese/dark sheet. The control column is host chrome for review, not product UI.
Acceptance paths
01Read the sheet top to bottom: session settings, session tools, context, then the separated Clear. Four written groups in the locked order.
02Find handoff in Session tools. It reads as a peer of Terminal and Changed files — nothing distinguishes it but its name.
03Tap Switch model. The sheet's content is replaced in place, Back returns, and the main structure is exactly as it was.
04Turn on the fast gate, then tap Fast mode. It flips On/Off in place and the sheet stays open.
05Set handoff active. Its row disappears and the group closes up — no disabled row, no placeholder, no gap, no explanation.
 
06Tap Clear once: only the trailing copy changes to the confirmation, and the accessible name changes with it. Tap any other row and it disarms.
07Tap Mode, Terminal, Files, Handoff or Help — the sheet dismisses first, then the existing destination opens. The log records which.
08Tap Compact or Simplify — sent once, sheet dismissed. Neither is a setting and neither shows a value.
09Flip locale and appearance on any state. The same component re-renders; grouping and hierarchy survive both.
10Set text 200%. Rows grow, the sheet scrolls, and every action stays reachable at full size — nothing shrinks to fit.
Prototype boundaries

The chat behind the scrim is a placeholder shape, never a transcript. Model and effort sub-pages stand in for the existing pickers and only record a choice. Destinations dismiss and log their name. Fixture values — fable, default effort, Ask every time — are chosen to stress layout.

B

Required states

Each frame is independently live — drive one without disturbing the others.
01 · 中文 · dark · effort + handoff + simplify

The default. Eleven actions, four groups, one reading path. Handoff sits third in Session tools with nothing to mark it out.

02 · EN · light · fast mode present

Fast mode appears only when the model reports the priority tier. It prints On or Off and toggles in place; no chevron, because it goes nowhere.

03 · 中文 · dark · handoff already active

The row is absent, not disabled. Session tools closes to three rows and says nothing about why — internal protocol state is never explained here.

04 · EN · dark · clear armed

Only the trailing copy changes. The row keeps its separation and danger ink, never becomes a filled primary button, and its accessible name carries the confirmation state.

05 · EN · light · model sub-page

The picker replaces the sheet's content rather than opening a second surface. Back is a named target, not a gesture. Model identifiers stay literal and monospaced.

06 · 中文 · dark · text 200%

At 402 × 874 the content scrolls inside the sheet. Rows grow to 64 pt, type never shrinks, values wrap under nothing, and Clear is reachable at the end of the scroll.

C

Row contract

Visibility, copy and exit behaviour per action. Nothing here is new.
GroupActionShown whenTrailingOn tap
{{ c.group }} {{ c.action }} {{ c.shown }} {{ c.trailing }} {{ c.exit }}
Accessibility

Each row is one named button with a 52 pt target at normal type and 64 pt at 200%. The group label and the trailing value are supplementary — the action's name stands alone. The chevron never carries navigation on its own, and armed Clear announces its confirmation state rather than relying on danger ink.

Copy rules

Fixed grammar is localized; daemon-supplied values are not. fable renders identically in both locales and in monospace, while Default, On, Off and Ask every time are translated. Commands are named by what they do, not by the slash string they send.

Out of scope

The model picker, effort picker, mode sheet, terminal, changed files, Help and handoff draft keep their current designs and are reached unchanged. No route, protocol or repository change; no new action, badge, metric or discovery affordance is introduced anywhere on this sheet.